/****************************************************************************************************/
/**
\file       interrupt.h
\brief      Interrupt services.
\author     Abraham Tezmol
\version    1.0
\date       31/10/2008
*/
/****************************************************************************************************/

/*****************************************************************************************************
* Module definition against multiple inclusion
*****************************************************************************************************/
#ifndef __INTERRUPT_H
#define __INTERRUPT_H

/*****************************************************************************************************
* Include files
*****************************************************************************************************/

/** Core modules */
/** Configuration Options */
#include "common_cfg.h"
/** MCU derivative information */
#include __MCU_DERIVATIVE
/** Variable types and common definitions */
#include "typedefs.h"

/** Used modules */

/*****************************************************************************************************
* Declaration of module wide TYPES
*****************************************************************************************************/

/*****************************************************************************************************
* Definition of module wide VARIABLES
*****************************************************************************************************/

/*****************************************************************************************************
* Definition of module wide MACROS / #DEFINE-CONSTANTS 
*****************************************************************************************************/

/*****************************************************************************************************
* Declaration of module wide FUNCTIONS
*****************************************************************************************************/

/** Interrupt Module Initalization */
void vfnInterrupt_Init(void);

/* Enable I-maskable interrupts by clearing the I bit in the CCR */
#define INTERRUPT_ENABLE()              \
{                                       \
    __asm  CLI;                         \
    XGMCTL_XGIE = 1;                    \
}

/** Disable I-maskable interrupts by setting the I bit in the CCR */
#define INTERRUPT_DISABLE()             \
{                                       \
    __asm  SEI;                         \
    XGMCTL_XGIE = 0;                    \
}

/*****************************************************************************************************
* Declaration of module wide FUNCTIONs 
*****************************************************************************************************/

#endif /* __INTERRUPT_H */
